/**
 * TetisDB
 *
 * Classe para travar o TetisContainer
 */

package br.com.tetisdb.util;

import br.com.tetisdb.container.TetisContainer;
import java.io.File;
import java.io.IOException;

public class TetisContainerLock {
    //para nao permitir a criacao de objetos TetisContainerLock
    private TetisContainerLock() {
    }
    
    /**
     * Metodo para efetuar um lock no TetisContainer
     *
     * @param container TetisContainer a receber o lock
     */
    public static void lock(TetisContainer container) throws IOException {
        String path = container.getWorkSpace()+File.separator;
        File lockFile = new File(path+".lock");
        
        if(!lockFile.exists()) {
            lockFile.createNewFile();
        }
    }
    
    /**
     * Metodo para efetuar um unlock no TetisContainer
     *
     * @param container TetisContainer a receber o unlock
     */
    public static void unlock(TetisContainer container) {
        String path = container.getWorkSpace()+File.separator;
        File lockFile = new File(path+".lock");
        
        if(lockFile.exists()) {
            lockFile.delete();
        }
    }
    
    /**
     * Verifica se o TetisContainer está em lock
     */
    public static boolean isLocked(TetisContainer container) {
        try {
            return (new File(container.getWorkSpace()+File.separator+".lock")).exists();
        } catch(Exception e) {
            return false;
        }
        
    }
    
}
